<template>
  <view v-if="visible" class="card-modal-overlay">
    <view class="card-modal">
      <!-- 头部区域 -->
      <view class="card-header">
        <view class="close-btn" @click="close">×</view>
      </view>

      <!-- 卡片内容 -->
      <view class="card-content">
        <slot>
          {{ content }}
        </slot>
      </view>

      <!-- 按钮区 -->
      <view class="card-footer">
        <button class="confirm-btn" @click="confirm">查看详情</button>
      </view>
    </view>
  </view>
</template>

<script>
export default {
  props: {
    visible: {
      type: Boolean,
      default: false
    },
    content: {
      type: String,
      default: ""
    }
  },
  methods: {
    close() {
      this.$emit("close");
    },
    confirm() {
      this.$emit("confirm");
      this.close();
    }
  }
};
</script>

<style scoped>
/* 背景遮罩 */
.card-modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5); /* 背景更暗淡 */
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999;
}

/* 卡片样式 */
.card-modal {
  width: 90%;
  max-width: 320px; /* 限制宽度适配手机屏幕 */
  background-color: #fff;
  border-radius: 12px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); /* 更柔和的阴影 */
  animation: slideDown 0.5s ease-out; /* 从上方滑动的动画 */
  overflow: hidden;
  display: flex;
  flex-direction: column;
  position: relative; /* 使关闭按钮定位相对 */
}

/* 头部区域 */
.card-header {
  height: 40px; /* 头部高度 */
  background-color: #f0f0f0; /* 头部背景色 */
  display: flex;
  justify-content: flex-end; /* 关闭按钮对齐到右边 */
  align-items: center; /* 垂直居中 */
  padding: 0 12px;
}

/* 关闭按钮 */
.close-btn {
  font-size: 22px;
  color: #333;
  cursor: pointer;
  font-weight: bold;
  z-index: 1; /* 保证按钮在最上层 */
}

/* 内容区域 */
.card-content {
  padding: 16px;
  font-size: 16px;
  color: #333;
  text-align: center;
  line-height: 1.6;
  max-height: 200px; /* 限制内容高度，防止内容溢出 */
  overflow-y: auto; /* 内容过长时显示滚动条 */
  margin-bottom: 50px; /* 给底部按钮预留空间 */
}

/* 按钮区 */
.card-footer {
  padding: 5px;
  display: flex;
  justify-content: center;
  background-color: #f8f8f8;
  position: absolute;
  bottom: 0;
  width: 100%;
}

/* 按钮样式 */
.confirm-btn {
  background-color: #007aff; /* 蓝色按钮 */
  color: #fff;
  border-radius: 20px;
  font-size: 14px; /* 更小的字体 */
  border: none;
  cursor: pointer;
  transition: background-color 0.3s;
}

.confirm-btn:hover {
  background-color: #005fdb; /* 按钮悬停效果 */
}

/* 从上到下滑动的动画 */
@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-100%); /* 从屏幕上方滑入 */
  }
  to {
    opacity: 1;
    transform: translateY(0); /* 最终停留在正常位置 */
  }
}
</style>
